// 理解二叉树

class Node {
    // 表示当前节点存储的数据
    item = null ;
    // 左子树
    left = null ;
    // 右子树
    right = null ;
    // 在构造函数中对 item 进行初始化
    constructor(item) {
        this.item = item;
    }
    // 在 toString 中返回当前节点的字符串形式
    toString(){
        return String(this.item);
    }
}

const root = new Node( 'A' );
console.log( root.toString() );

let b = new Node( 'B' );
b.left = new Node( 'D' );
b.right = new Node( 'E' );

root.left = b ;

let c = new Node( 'C' );
c.left = new Node( 'F' );
c.right = new Node( 'G' );

root.right = c ;

// 实现中序遍历
function inorder( node ) {

}

// 从根节点开始实现 中序遍历
inorder( root );

// 4月8日上午任务:
// 1、根据给定的字符串构造一个二叉树
//    给定中序遍历的字符串 ABCDEFGHI ，根据中序遍历的字符串还原一棵二叉树
// 2、分别采用 前序、中序、后序 三种不同的方式遍历刚创建好的二叉树
// 3、学有余力的同学可以实现 广度优先遍历 (4月8日当天)
//    所有同学的 广度优先遍历 最晚在 周末完成
// 4、继续完成4月7日未完成之任务
